//******************************************************************************************************
//  Overlays.tsx - Gbtc
//
//  Copyright © 2025, Grid Protection Alliance.  All Rights Reserved.
//
//  Licensed to the Grid Protection Alliance (GPA) under one or more contributor license agreements. See
//  the NOTICE file distributed with this work for additional information regarding copyright ownership.
//  The GPA licenses this file to you under the MIT License (MIT), the "License"; you may not use this
//  file except in compliance with the License. You may obtain a copy of the License at:
//
//      http://opensource.org/licenses/MIT
//
//  Unless agreed to in writing, the subject software distributed under the License is distributed on an
//  "AS-IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. Refer to the
//  License for the specific language governing permissions and limitations.
//
//  Code Modification History:
//  ----------------------------------------------------------------------------------------------------
//  05/08/2025 - Preston Crawford
//       Generated original version of source code
//
//******************************************************************************************************

import * as d3 from "d3";

export const updateFFTWindow = (
    container: HTMLDivElement | null,
    dataType: string,
    currentFFTWindow: [number, number],
    showFFT: boolean,
    mouseMode: string
) => {
    if (container == null || (dataType !== 'Voltage' && dataType !== 'Current'))
        return;

    d3.select(container)
        .select(".fftWindow")
        .attr("x", currentFFTWindow[0])
        .attr("width", currentFFTWindow[1] - currentFFTWindow[0])
        .style("opacity", showFFT ? 0.5 : 0)
        .style("cursor", mouseMode === "fftMove" && showFFT ? "grab" : "default")
        .style("pointer-events", mouseMode === "fftMove" && showFFT ? "auto" : "none");
}

export const updateDurationWindowRect = (container: HTMLDivElement | null, xScale: d3.ScaleLinear<number, number>, inception: number, durationEndTime: number, plotMarkers: boolean) => {
    if (container == null) return;

    d3.select(container)
        .select(".DurationWindow")
        .attr("x", xScale(inception))
        .attr("width", xScale(durationEndTime) - xScale(inception))
        .style("opacity", plotMarkers ? 0.25 : 0)
        .style("pointer-events", "none");
}
